package cn.wjssl.domain.activity.service;

import cn.wjssl.domain.activity.model.valobj.ActivitySkuStockKeyVO;

import java.util.List;

/**
 * 活动商品SKU库存相关服务，获取库存消耗队列, 清空队列等
 */
public interface IRaffleActivitySkuStockService {

    /**
     * 获取活动sku库存消耗队列
     *
     * @return 奖品库存Key信息
     * @throws InterruptedException 异常
     */
    ActivitySkuStockKeyVO takeQueueValue() throws InterruptedException;

    ActivitySkuStockKeyVO takeQueueValue(Long sku) throws InterruptedException;

    /**
     * 同步Mysql 定时更新活动sku库存
     *
     * @param sku 活动商品
     */
    void updateActivitySkuStock(Long sku);

    /**
     * 缓存库存以消耗完毕，直接更新数据库库存为0
     *
     * @param sku 活动商品
     */
    void clearActivitySkuStock(Long sku);

    /**
     * 清空redis的延迟队列
     */
    void clearQueueValue();

    /**
     * 查询所有sku的sku编号
     */
    List<Long> querySkuList();
}
